#ifndef AER_WINDOW_HPP_
#define AER_WINDOW_HPP_

#include "../aerDefs.hpp"
#include "aerDisplay.hpp"
#include <SFML/Window.hpp>


namespace aer {


/// ====================================
/// + Describes a window [ uses SFML ] +
/// ====================================
class Window
{
  public:
    static const Display sDisplay_GL20_800x600;
    static const Display sDisplay_GL20_720p;
    static const Display sDisplay_GL33_800x600;
    static const Display sDisplay_GL33_720p;
    static const Display sDisplay_GL42_720p;
    
  private:
    sf::Window m_handle;//
    Display m_display;
    bool m_bClosed;
    
    
  public:
    Window( const Display &display, const char *title);
    
    void setTitle(const char *title);
    void setPosition(const int x, const int y);
    void resize(const unsigned int width, const unsigned int height);
    
    void setVerticalSync(bool status);
    //void setFullScreen(bool status);
    //void setVisible(bool status);
    
    void close();
        
    bool pollEvent(sf::Event &ev);//
    void swap();    
    
    const Display& getDisplay() { return m_display; }
    const bool hasClosed() { return m_bClosed; }
};
  
} // aer

#endif // AER_WINDOW_HPP_
